home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / powervww / pvlbox.h < prev    next >
C/C++ Source or Header  |  1998-01-05  |  5KB  |  129 lines

  1. //  ____________________________________________________
  2. // |                                                    |
  3. // |  Project:     POWER VIEW INTERFACE                 |
  4. // |  File:        PVLBOX.H                             |
  5. // |  Compiler:    WPP386 (10.6)                        |
  6. // |                                                    |
  7. // |  Subject:     List box interface                   |
  8. // |                                                    |
  9. // |  Author:      Emil Dotchevski                      |
  10. // |____________________________________________________|
  11. //
  12. // E-mail: zajo@geocities.com
  13. // URL:    http://www.geocities.com/SiliconValley/Bay/3577
  14.  
  15. #ifndef _PVLBOX_H
  16. #define _PVLBOX_H
  17.  
  18. #define lbfCHECKED  0x01
  19. #define lbfTITLE    0x02
  20. #define lbfDISABLED 0x04
  21.  
  22. struct Tlb_item
  23. {
  24.   char flags;
  25.   char data[];
  26. };
  27.  
  28. typedef Tlb_item* Tlb_arr[1];
  29. typedef void (* Tlb_item_killer) ( void *p );
  30. typedef int (* Tlb_item_comparator) ( const Tlb_item *p1, const Tlb_item *p2 );
  31.  
  32. class Tlb_list: public Tlist
  33. {
  34.   public:
  35.     uint data_size; //size of the data, associated w/ every item in the list
  36.     uint _hsize;
  37.     uint _hbeg_print;
  38.     int _hmax_print;
  39.     uint _hmax_size;
  40.     boolean _changed;
  41.     boolean _overflow;
  42.     uint &hsize;
  43.     uint &hbeg_print;
  44.     int &hmax_print;
  45.     uint &hmax_size;
  46.     boolean &changed; //TRUE if list has been modified
  47.     boolean &overflow; //TRUE if list overflow
  48.     Tlb_arr *items_ptr; //pointer to array of pointers to the items
  49.     Tlb_item_killer lb_item_killer;
  50.     Tlb_item_comparator lb_item_comparator;
  51.     Tlb_list( void );
  52.     Tlb_list( Tlb_list *_list );
  53.     Tlb_list( uint &v_count, uint &v_current, uint &v_beg_print, int &v_max_print,
  54.               uint &h_size, uint &h_beg_print, int &h_max_print );
  55.     virtual ~Tlb_list( void );
  56.     virtual void clear( void ); //empty the list
  57.     virtual uint add( void *data ); //add an item to the list
  58.     virtual void ins( uint i, void *data ); //insert an item before the i-th item
  59.     virtual void del( uint i ); //delete i-th item
  60.     virtual void get( uint i, void *data ); //get the i-th item
  61.     virtual void put( uint i, void *data ); //replace the i-th item
  62.     virtual void sort( void ); //sort items in the list
  63.     void sort_range( uint from, uint how_many );
  64.     uint bin_search( Tlb_item *p ); //binary search of item p
  65.     uint bin_search_range( Tlb_item *p, uint from, uint how_many );
  66.     virtual void up( void ); //select previous item
  67.     virtual void down( void ); //select next item
  68.     virtual void top( void ); //select the first item
  69.     virtual void bottom( void ); //select the last them
  70.     virtual void at( uint i ); //scroll to i-th item
  71.     virtual void gettxt( uint i, char *t ); //get i-th item as a string
  72.     virtual void *getptr( uint i ); //get ptr to i-th item
  73.     virtual void error( int error_code ); //called on error
  74.     void add_title( char *data );
  75.     void add_blank( void );
  76.     uint findft( char *t ); //find first text, use findn to find next
  77.     void getdata( uint i, void *data ); //get the data associated w/ the i-th item
  78.     void item_data( Tlb_item *p, void *data );
  79.     void item_str( Tlb_item *p, char *s );
  80.     void check( uint i, boolean f ); //check i-th item
  81.     boolean checked( uint i ); //TRUE if i-th item is checked
  82.     void set_enable( uint i, boolean f ); //enable/disable i-th item
  83.     boolean enabled( uint i ); //TRUE if i-th item is enabled
  84.     void set_comparator( Tlb_item_comparator _lb_item_comparator );
  85.  
  86.   protected:
  87.     virtual void inc_count( void );
  88.     virtual void dec_count( void );
  89.     Tlb_item *alloc_lb_item( char *data );
  90.     void free_lb_item( Tlb_item *p );
  91.     void flip( uint i );
  92.     void multi_flip( uint from, uint to );
  93. };
  94.  
  95. class Tlist_box: public Titem, public Tlb_list
  96. {
  97.   public:
  98.     Tvscroll_bar *v_bar;
  99.     Thscroll_bar *h_bar;
  100.     Tlist_box( uint &_data, int _xl, int _yl );
  101.     Tlist_box( uint &_data, int _xl, int _yl, Tlb_list *_list );
  102.  
  103.   protected:
  104.     virtual void draw( void );
  105.     virtual void event_handler( Tevent &ev );
  106.     virtual void ok_item( void );
  107.  
  108.   private:
  109.     uint *dta;
  110.     void init( uint &_data );
  111. };
  112. #endif
  113.  
  114. //PREFIXES
  115.  
  116. void _lsize( uint size );    uint __lsize( void );
  117. void _ldata( void *data );         void *__ldata( void );
  118. void _litem_comparator( Tlb_item_comparator _comparator );
  119.                                    Tlb_item_comparator __litem_comparator( void );
  120. void _litem_killer( Tlb_item_killer _killer );
  121.                                    Tlb_item_killer __litem_killer( void );
  122.  
  123. //CONSTRUCTORS FOR USE WITH DIALOG BOXES
  124.  
  125. Tlist_box *list_box( char *t, uint &data, int _xl, int _yl );
  126. Tlist_box *list_box( char *t, uint &data, int _xl, int _yl, Tlb_list *list );
  127. Tlist_box *mslist_box( char *t, uint &data, int _xl, int _yl );
  128. Tlist_box *mslist_box( char *t, uint &data, int _xl, int _yl, Tlb_list *list );
  129.